const log4js = require('log4js');
const _ = require('lodash');
log4js.configure({
  appenders: [
    { type: 'console' }, 
    {
      'type': 'dateFile',
      'filename': './logs/info/',
      'alwaysIncludePattern': true,
      'pattern': 'yyyy-MM-dd.log',
      'category': 'info'
    },
    {
      'type': 'dateFile',
      'filename': './logs/debug/',
      'alwaysIncludePattern': true,
      'pattern': 'yyyy-MM-dd.log',
      'category': 'debug'
    },
    {
      'type': 'dateFile',
      'filename': './logs/error/',
      'alwaysIncludePattern': true,
      'pattern': 'yyyy-MM-dd.log',
      'category': 'error'
    }
  ]
});

let logger = new Object();

logger.info = (fun, msg) => {
  if (_.isString(msg)) {
    log4js.getLogger('info').info(' web-pc[' + process.pid + '] - ' + fun + ' - ' + msg);
  } else if (msg instanceof Error) {
    log4js.getLogger('info').info(' web-pc[' + process.pid + '] - ' + fun + ' - ' + msg.message + ' ' + msg.stack);
  } else {
    log4js.getLogger('info').info(' web-pc[' + process.pid + '] - ' + fun + ' - ' + JSON.stringify(msg));
  }
}

logger.debug = (fun, msg) => {
  if (_.isString(msg)) {
    log4js.getLogger('debug').debug(' web-pc[' + process.pid + '] - ' + fun + ' - ' + msg);
  } else if (msg instanceof Error) {
    log4js.getLogger('debug').debug(' web-pc[' + process.pid + '] - ' + fun + ' - ' + msg.message + ' ' + msg.stack);
  } else {
    log4js.getLogger('debug').debug(' web-pc[' + process.pid + '] - ' + fun + ' - ' + JSON.stringify(msg));
  }

}
logger.error = (fun, msg) => {
  if (_.isString(msg)) {
    log4js.getLogger('error').error(' web-pc[' + process.pid + '] - ' + fun + ' - ' + msg);
  } else if (msg instanceof Error) {
    log4js.getLogger('error').error(' web-pc[' + process.pid + '] - ' + fun + ' - ' + msg.message + ' ' + msg.stack);
  } else {
    log4js.getLogger('error').error(' web-pc[' + process.pid + '] - ' + fun + ' - ' + JSON.stringify(msg));
  }
}

module.exports = logger;